package com.xhx.utils;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;

/**
 * <h3>项目名称：北京电子政务网 </h3>
 * <p>文件名称：JsonResult.java</p>
 * <p>描述：API Json 结果响应</p>
 * <p>创建时间：2020-09-03 </p>
 * <p>公司信息：北京电子政务有限公司 - 研发部</p>
 *
 * @author <a href="mailto:beijingit@qq.com">刘景磊</a>
 * @version 1.0
 * @notes. <ol>
 * <li>[2020-09-03] 刘景磊：创建文件</li>
 * <li>[2020-09-03] 刘景磊：添加文档注释</li>
 * </ol>
 */
@ApiModel(description= "API Json 结果响应")
public class JsonResult implements Serializable {

    //#region [ 成员变量 ]

    /**
     * 状态码
     */
    @ApiModelProperty(value = "状态码")
    private Integer code = 0;

    /**
     * 消息体
     */
    @ApiModelProperty(value = "消息体")
    private String msg = "ok";

    /**
     * 业务数据
     */
    @ApiModelProperty(value = "业务数据")
    private Object data = null;

    //#endregion

    //#region [ 构造函数 ]

    /**
     * <strong>构造函数：无参</strong>
     */
    public JsonResult() {

    }

    /**
     * <strong>构造函数：含状态码</strong>
     *
     * @param code 状态码
     * @param msg  消息
     */
    public JsonResult(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * <strong>构造函数：含业务数据</strong>
     *
     * @param code 状态码
     * @param msg  消息
     * @param data 业务数据
     */
    public JsonResult(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;

        // TODO: [2020-09-03] 刘景磊：待完善某功能，标记示例（IDEA左下角展开双击定位到此）
    }

    //#endregion

    //#region [ getter/setter ]

    /**
     * <strong>获取 状态码</strong>
     *
     * @return 状态码
     */
    public Integer getCode() {
        return code;
    }

    /**
     * <strong>设置 状态码</strong>
     *
     * @param code 状态码
     */
    public void setCode(Integer code) {
        this.code = code;
    }

    /**
     * <strong>获取 消息</strong>
     *
     * @return 消息
     */
    public String getMsg() {
        return msg;
    }

    /**
     * <strong>设置 消息</strong>
     *
     * @param msg 消息
     */
    public void setMsg(String msg) {
        this.msg = msg;
    }

    /**
     * <strong>获取 业务数据</strong>
     *
     * @return 业务数据
     */
    public Object getData() {
        return data;
    }

    /**
     * <strong>设置 业务数据</strong>
     *
     * @param data 业务数据
     */
    public void setData(Object data) {
        this.data = data;
    }

    //#endregion
}